/***********************************************************************
 * Module:  ReportWriterFactory.java
 * Author:  
 * Created: 1970年1月1日 8:00:00
 * Purpose: Defines the Class ReportWriterFactory
 ***********************************************************************/

package com.powerunion.datacollection.report.excelreport;

import com.powerunion.datacollection.report.excelreport.base.IReportWriter;
import com.powerunion.datacollection.report.excelreport.config.ReportConfig;
import com.powerunion.datacollection.report.excelreport.config.ReportConfig.SheetConfig;
import com.powerunion.datacollection.report.excelreport.impl.CardStyleReportWriterImpl;
import com.powerunion.datacollection.report.excelreport.impl.ListStyleReportWriterImpl;

/**
 * 报表读写对象生成工厂，该工厂对象通过读取当前报表的配置信息而生成相应的报表生成器。
 * @author juny
 */
public class WriterFactory {
    /**
     * 根据配置文件生成不同的报表读写对象
     * @param 	config 当前sheet对应的配置信息对象。
     * @return	返回一个报表生成器
     */
    public IReportWriter getReportWriter(SheetConfig config) {
        if(config.getReportStyle().equalsIgnoreCase(ReportConfig.REPORT_STYLE_CARD)){
            return new CardStyleReportWriterImpl();
        }
        
        if(config.getReportStyle().equalsIgnoreCase(ReportConfig.REPORT_STYLE_LIST)){
            return new ListStyleReportWriterImpl();
        }
        
        return null;
    }
    
    /**
     * 取得报表生成器工厂实例
     * @return	返回报表生成器工厂实例。
     */
    public static WriterFactory getWriterFactory(){
        if(null == factory){
            factory = new WriterFactory();
        }
        return factory;
    }
    
    private static WriterFactory factory = null;
}